
public enum EnvParaType
{
    BOOL = 1,
    INT = 2,
    FLOAT = 3,
    LIST_FLOAT = 4,
    RANDOM_NORMAL = 5,
    RANDOM_UNIFORM = 6
}

//---------EnvPara Document-------------
/*
When type == EnvParaType.BOOL or INT or FLOAT:
    value should be a bool or int or float.
When type == EnvParaType.LIST_FLOAT:
    value should be a List<float>.
When type == EnvParaType.RANDOM_NORMAL:
    value should be a List<float>, and value.Count should be equal to 3.
    value[0] should be mean value of the normal distribution.
    value[1] should be std value of the normal distribution.
    value[2] should be the recently sampled value of the normal distribution. 
When type == EnvParaType.RANDOM_UNIFORM:
    value should be a List<float>, and value.Count should be equal to 3.
    value[0] should be minValue(inclusive) of the uniform distribution.
    value[1] should be maxValue(inclusive) of the uniform distribution.
    value[2] should be the recently sampled value of the uniform distribution. 
*/
public class EnvPara
{
    public EnvParaType type;
    public object value;
    public EnvPara(EnvParaType type, object value)
    {
        this.type = type;
        this.value = value;
    }
}

//*** Source definition of the environment parameters ***
//The detailed definition and initialization is in the EnvParaManager.cs
//EP = environment parameter
public enum EP
{
    seed,
    playgroundNumber,
    targetPosX,
    targetPosY,
    targetPosZ,
    spawnPosX,
    spawnPosY,
    spawnPosZ,
    enableRandomAirplaneSpawnRotation,
    enableBoundaryCheck,
    boundaryForward,
    boundaryBackward,
    boundaryUp,
    boundaryDown,
    boundaryLeft,
    boundaryRight,
    maxDistanceToTarget,
    agentNumberPerPlayground,
    badSpheresPosZ,
    badSpherePosX,
    badSpherePosY,
    badSphereScale,
    distanceRewardScale,
    angularVelocityPunishScale,
    timeConsumePunishScale,
    unifiedEpisode,
    isCrashEndEpisode
    
}